home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-19
/
rk_plot.zip
/
EXAMPLE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-05-13
|
6KB
|
172 lines
{
┌───────────────────────────────────────────────────────────────────────────┐
│ │
│ Demonstrationsprogramm zur Anwendung von Routinen der Unit PLOT │
│ │
│ Copyright (C) 1991, Hans-Jürgen Herrler und Dieter Sosna │
│ │
└───────────────────────────────────────────────────────────────────────────┘
}
{$A+,F+,R-,S-}
{$M 16384,0,655360}
PROGRAM Example;
USES Crt, Graph, Plot;
CONST
TreiberPfad = ''; { Pfad für Grafiktreiber *.BGI, bitte anpassen! }
VAR
GrafikTreiber,
GrafikModus : Integer;
Matrix : Array[1..30,1..33] of Float;
{ Im Feld "Matrix" werden die an den Stützstellen berechneten Funktions-
werte abgelegt. Sollen wesentlich mehr Punkte berücksichtigt werden,
so paßt das Feld nicht mehr ins Datensegment - man kann dann die Matrix
zeilenweise auf dem Heap ablegen, aber lückenlos(!) Zeile hinter Zeile. }
MatrixParm : MatrixParameter;
BildParm : BildParameter;
Mono : Boolean; { 2- oder 16-Farben-Modus }
{ ========================================================================= }
FUNCTION Fkt(x, y: Float): Float;
BEGIN
{ Hier darzustellende Anwenderfunktion eintragen: }
Fkt := (Cos(x) - Sin(2*x)) * Cos(y)
END;
{ ------------------------------------------------------------------------- }
PROCEDURE FunktionswerteBerechnen;
VAR
i, j : Byte;
X, Y, Z,
XMin, XMax, XSchritt,
YMin, YMax, YSchritt : Float;
BEGIN
{ Intervallgrenzen }
XMin := 0; XMax := 6; YMin := -3; YMax := 6;
WITH MatrixParm DO BEGIN
{ Zahl der Gitterpunkte }
XGitter := 33;
YGitter := 30;
{ Funktionswerte berechnen, in Matrix ablegen }
XSchritt := (XMax-XMin)/(XGitter-1);
YSchritt := (YMax-YMin)/(YGitter-1);
ZMin := Fkt(1,1); ZMax := ZMin;
y := YMin;
FOR i := 1 TO YGitter DO BEGIN
x := XMin;
FOR j:= 1 TO XGitter DO BEGIN
z := Fkt(x, y);
IF z > ZMax THEN ZMax := z;
IF z < ZMin THEN ZMin := z;
Matrix[i, j] := z;
x := x + XSchritt
END;
y := y + YSchritt
END
END
END; { FunktionswerteBerechnen }
{ ------------------------------------------------------------------------- }
PROCEDURE VierBilder;
BEGIN
{ Teilbild links oben: }
WITH BildParm DO BEGIN
SchirmLinks := 0; SchirmRechts := 0.48;
SchirmOben := 0; SchirmUnten := 0.48;
IF Mono THEN BEGIN
ColorLine := 1;
ColorFrame := 1;
ColorFillO := 0;
ColorFillU := 0;
ColorFillX := 0;
ColorFillY := 0
END
ELSE BEGIN
ColorLine := White;
ColorFrame := White;
ColorFillO := Green;
ColorFillU := Brown;
ColorFillX := Magenta;
ColorFillY := Cyan
END;
Projekt := ParallelProjektion;
BrennweiteZuAbstand := 0.11;
Alpha := 33;
Gamma := 25;
END;
VolumenPerspektive(Matrix, MatrixParm, BildParm, True);
{ Teilbild rechts oben: }
WITH BildParm DO BEGIN
SchirmLinks := 0.52; SchirmRechts := 1;
SchirmOben := 0; SchirmUnten := 0.48;
IF Not Mono THEN BEGIN
ColorLine := Yellow;
ColorFillO := Brown;
ColorFillU := Blue;
ColorFillX := LightBlue;
ColorFillY := LightMagenta
END;
Projekt := ZentralProjektion;
Alpha := -38;
Gamma := 23;
Brennweite := 30;
Abstand := 300
END;
VolumenPerspektive(Matrix, MatrixParm, BildParm, True);
{ Teilbild links unten: }
WITH BildParm DO BEGIN
SchirmLinks := 0; SchirmRechts := 0.48;
SchirmOben := 0.52; SchirmUnten := 1;
IF Not Mono THEN ColorLine := LightGreen;
Projekt := ParallelProjektion;
BrennweiteZuAbstand := 0.11;
Alpha := -144;
Gamma := 20;
END;
AlphaScheibenPerspektive(Matrix, MatrixParm, BildParm);
{ Teilbild rechts unten: }
WITH BildParm DO BEGIN
SchirmLinks := 0.52; SchirmRechts := 1;
SchirmOben := 0.52; SchirmUnten := 1;
IF Not Mono THEN ColorLine := LightMagenta;
Projekt := ParallelProjektion;
BrennweiteZuAbstand := 0.11;
Alpha := -124;
Gamma := 30;
END;
GitterFlaechenPerspektive(Matrix, MatrixParm, BildParm, True);
END; { VierBilder }
{ ===== Hauptprogramm ===================================================== }
BEGIN
GrafikTreiber := Detect;
InitGraph(GrafikTreiber, GrafikModus, TreiberPfad);
Mono := (GetMaxColor < 15);
OutTextXY(20, 20, 'Funktionswerte werden berechnet ...');
FunktionswerteBerechnen;
ClearDevice;
VierBilder;
REPEAT UNTIL KeyPressed;
CloseGraph
END.